#include <cstdio>
#include <algorithm>
#include <cstring>
#define _clr(x,a) memset(x,a,sizeof(x))
using namespace std;
const int N=550;
int n,m,cnt;
char op;
int p[N];
//与父节点的关系 0平局 1输给父节点(被吃) 2赢父节点(吃父节点)
int r[N];
//i做裁判时，第几个有矛盾
int err[N];
char chi[4*N][20];
struct node{
    int x;
    int y;
    int o;
}nodes[4*N];
void init(){
    for(int i=0;i<N;i++){
        p[i]=i;
        r[i]=0;
    }
}
int find(int x){
    if(p[x]==x){
        return x;
    }
    int t=find(p[x]);
    r[x]=(r[x]+r[p[x]])%3;
    return p[x]=t;
}
void join(int a,int b,int c){
    int fa=find(a);
    int fb=find(b);
    p[fb]=fa;
    r[fb]=(3-r[b]+r[a]+c)%3;
}

int main(void){
    while(~scanf("%d%d",&n,&m)){
        if(n==0){
            printf("Player 0 can be determined to be the judge after 0 lines\n");
			continue;
        }
        //记录下关系
        for(int i=0;i<m;i++){
            scanf("%d%c%d",&node[i].x,&ch,&node[i].y);
            if(ch=='='){
                node[i].o=0;
            }
            //x做父节点
            else if(ch=='<'){
                node[i].o=2;
            }
            else{
                node[i].o=1;
            }
        }
        //枚举裁判
        for(int i=0;i<n;i++){

            for(int j=0;j<m;j++){
                node cur=nodes[j];
                //有裁判存在的一局
                if(cur.x==i || cur.y==i){
                    continue;
                }
                if(find(cur.x)==find(cur.y)){
                    int x=cur.x;
                    int y=cur.y;
                }

            }
        }
    }
    return 0;
}
